package com.toolset.Activity;

import android.content.Intent;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTabHost;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.text.style.BulletSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TabHost;
import android.widget.TabWidget;
import android.widget.TextView;

import com.toolset.Activity.BaseActivity;
import com.toolset.Adapter.MyFragmentAdapter;
import com.toolset.Bean.User;
import com.toolset.R;

import org.litepal.LitePalApplication;
import org.w3c.dom.Text;

import java.util.ArrayList;
import java.util.List;

import layout.UserFragment;
import layout.HomeFragment;

/*Activity、FragmentActivity和AppCompatActivity的区别
https://www.jianshu.com/p/9d590c478828
本身  AppCompatActivity继承于  FragmentActivity
所以可直接用BaseActivity
 */
//实现两个接口可实现页面的滑动 以及点击切换
public class MainActivity extends BaseActivity implements
        ViewPager.OnPageChangeListener, TabHost.OnTabChangeListener{

    private ViewPager viewPager;  ///视图滑动切换工具 实现页面切换
    private LayoutInflater layoutInflater;  //加载页面布局
    private FragmentTabHost fragmentTabHost; //碎片绑定

    // 存放碎片的列表 发送到碎片适配器
    private List<Fragment> fragmentList = new ArrayList<>();


    //碎片数组  主界面 与个人界面
    private Class fragmentArray[]= {HomeFragment.class, UserFragment.class};

    //图片
    private int imageViewArray[] = {R.drawable.tab_home_btn, R.drawable.tab_user_btn};
    //文字
    private String textViewArray[] = {"首页", "个人信息"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();//初始化控件
        initPage();//初始化页面

    }

    





    //初始化控件
    private void initView() {
        viewPager = (ViewPager) findViewById(R.id.pager);

        //设置页面切换时的监听器
        viewPager.addOnPageChangeListener(this);

        //加载页面布局
        layoutInflater = LayoutInflater.from(this);

        /*实例化FragmentTabHost对象并进行绑定*/
        //绑定tahost
        fragmentTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
        //绑定viewpager
        fragmentTabHost.setup(this, getSupportFragmentManager(), R.id.pager);

        //设置点击文字或者图片进行切换
        fragmentTabHost.setOnTabChangedListener(this);

        //设置导航文字 图片

        int count = textViewArray.length;

        /*新建Tabspec选项卡并设置Tab菜单栏的内容和绑定对应的Fragment*/
        for (int i = 0; i < count; i++) {
            // 给每个Tab按钮设置标签、图标和文字
            TabHost.TabSpec tabSpec = fragmentTabHost.newTabSpec(textViewArray[i])
                    .setIndicator(getTabItemView(i));
            // 将Tab按钮添加进Tab选项卡中，并绑定Fragment
            fragmentTabHost.addTab(tabSpec, fragmentArray[i], null);
            fragmentTabHost.setTag(i);
            fragmentTabHost.getTabWidget().getChildAt(i)
                    .setBackgroundResource(R.drawable.selector_tab_background);//设置Tab被选中的时候颜色改变

        }

    }

    /*初始化Fragment*/
    private void initPage() {
        HomeFragment mainFragment = new HomeFragment();
        UserFragment userFragment = new UserFragment();

        fragmentList.add(mainFragment);
        fragmentList.add(userFragment);

        //绑定Fragment适配器
        viewPager.setAdapter(new MyFragmentAdapter(getSupportFragmentManager(), fragmentList));
        fragmentTabHost.getTabWidget().setDividerDrawable(null);
    }

    private View getTabItemView(int i) {
        //将xml布局转换为view对象
        View view = layoutInflater.inflate(R.layout.nav_content, null);
        //利用view对象，找到布局中的组件,并设置内容，然后返回视图
        ImageView mImageView = (ImageView) view
                .findViewById(R.id.nav_imageview);
        TextView mTextView = (TextView) view.findViewById(R.id.nav_textview);
        mImageView.setBackgroundResource(imageViewArray[i]);
        mTextView.setText(textViewArray[i]);
        return view;
    }


    @Override
    public void onPageSelected(int arg0) {//arg0是表示你当前选中的页面位置Postion，这事件是在你页面跳转完毕的时候调用的。
        TabWidget widget = fragmentTabHost.getTabWidget();
        int oldFocusability = widget.getDescendantFocusability();
        widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);//设置View覆盖子类控件而直接获得焦点
        fragmentTabHost.setCurrentTab(arg0);//根据位置Postion设置当前的Tab
        widget.setDescendantFocusability(oldFocusability);//设置取消分割线


    }

    @Override
    public void onTabChanged(String tabId) {//Tab改变的时候调用
        int position = fragmentTabHost.getCurrentTab();
        viewPager.setCurrentItem(position);//把选中的Tab的位置赋给适配器，让它控制页面切换


        fragmentTabHost.setCurrentTabByTag(tabId);

        for (int i =0; i < fragmentTabHost.getTabWidget().getChildCount(); i++) {
            TextView tv = (TextView) fragmentTabHost.getTabWidget().getChildAt(i).findViewById(R.id.nav_textview);
         if (fragmentTabHost.getCurrentTab() == i) {//选中 
            tv.setTextColor(this.getResources().getColor(R.color.colorGreen));
        }else {//不选中 
            tv.setTextColor(this.getResources().getColor(R.color.colorBlack));}
    }

    }


    @Override
    public void onPageScrollStateChanged(int arg0) {

    }//arg0 ==1的时候表示正在滑动，arg0==2的时候表示滑动完毕了，arg0==0的时候表示什么都没做，就是停在那。

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {

    }//表示在前一个页面滑动到后一个页面的时候，在前一个页面滑动前调用的方法
}
